home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / feel-075.lha / feel0.75 / Src / ngenerics.h < prev    next >
C/C++ Source or Header  |  1992-06-18  |  1KB  |  39 lines

  1. /* External interface */
  2. #ifndef NGENERICS_H
  3. #define NGENERICS_H
  4. extern LispObject generic_apply(LispObject*,LispObject);
  5. extern LispObject generic_apply_1(LispObject*, LispObject,LispObject);
  6. extern LispObject generic_apply_2(LispObject*, LispObject,
  7.                                LispObject, LispObject);
  8. extern LispObject generic_apply_3(LispObject*, LispObject,
  9.                   LispObject,LispObject,LispObject);
  10. extern LispObject generic_apply_4(LispObject*,  LispObject,
  11.               LispObject, LispObject, LispObject, LispObject);
  12.  
  13. #define is_generic(x)          (typeof(x)==TYPE_GENERIC)
  14.  
  15. /* macros for generics */
  16.  
  17. #define N_SLOTS_IN_GENERIC_CLASS 8
  18.  
  19. #define generic_name(x)            (slotref((x),0))
  20. #define generic_home(x)            (slotref((x),1))
  21. #define generic_argtype(x)            (slotref((x),2))
  22. #define generic_fast_method_cache(x)     (slotref((x),3))
  23. #define generic_slow_method_cache(x)     (slotref((x),4))
  24. #define generic_method_table(x)        (slotref((x),5))
  25. #define generic_method_class(x)     (slotref((x),6))
  26. #define generic_discriminator(x)     (slotref((x),7))
  27.  
  28. #define N_SLOTS_IN_METHOD_CLASS 5
  29.  
  30. #define method_qualifier(x)     slotref(x,0)
  31. #define method_signature(x)    slotref(x,1)
  32. #define method_host(x)        slotref(x,2)
  33. #define method_function(x)     slotref(x,3)
  34. #define method_fixed(x)     slotref(x,4)
  35.  
  36. #define is_method(x)     (typeof(x)==TYPE_METHOD)
  37.  
  38. #endif
  39.